package bancosys.tec.rtm.monitor;

import java.util.List;
import java.util.Map;

/**
 * Interface que define monitor baseado em checkers (verificadores de estado simples, Ok/NaoOk).
 * 
 * @author Marcio Ribeiro (mmr)
 */
public interface CheckerMonitor extends Monitor {

    /**
     * @return mapa de checkers.
     */
    Map<String, Checker> getCheckers();

    /**
     * @return mapa de actions.
     */
    Map<String, Action> getActions();

    /**
     * @return lista de casos de regras.
     */
    List<RulesCase> getRulesCases();

    /**
     * Adiciona um checker ao mapa de checkers.
     * 
     * @param checkerKey chave que sera usada para recuperar esse checker.
     * @param checker instancia do checker.
     */
    void addChecker(String checkerKey, Checker checker);

    /**
     * Adiciona uma action ao mapa de actions.
     * 
     * @param actionKey chave que sera usada para recuperar essa action.
     * @param action instancia da action.
     */
    void addAction(String actionKey, Action action);

    /**
     * Adiciona um caso de regras.
     * 
     * @param rulesCase um caso de regras.
     */
    void addRulesCase(RulesCase rulesCase);
}